[Сервер] Установка и удаление fail2ban на debian 12

Fail2ban – это мощный инструмент для защиты серверов от несанкционированного доступа. Он автоматически анализирует логи служб (например, sshd) и блокирует IP-адреса, с которых происходит слишком много неудачных попыток входа за короткий промежуток времени. Это помогает эффективно предотвращать brute-force атаки и повысить безопасность системы. Fail2ban легко настраивается через конфигурационные файлы, где можно задать параметры времени блокировки, число допустимых попыток и исключить доверенные IP. Благодаря автоматизации процесса защиты, fail2ban широко используется на серверах Linux для минимизации рисков взлома.

Полностью удалить старый fail2ban(если есть):

sudo systemctl stop fail2ban
sudo systemctl disable fail2ban
sudo apt-get purge fail2ban
sudo rm -rf /etc/fail2ban
sudo rm -rf /var/log/fail2ban.log
sudo apt-get autoremove

Установки последней версии fail2ban из GitHub:

sudo apt-get update
sudo apt-get install python3 python3-pip python3-systemd -y
cd /tmp
git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python3 setup.py install

Проверка версии fail2ban:

fail2ban-server -V

Проверить где находится fail2ban-server после установки из исходников:

which fail2ban-server

Открыть файл службы для systemd:

sudo nano /lib/systemd/system/fail2ban.service

Найти в нем строку с ExecStart и убедиться, что путь к fail2ban-server правильный. Например:

/usr/local/bin/fail2ban-server

Полный Unit службы fail2ban.service с этим путем:

[Unit]  
Description=Fail2Ban Service  
After=network.target

[Service]  
Type=simple  
ExecStart=/usr/local/bin/fail2ban-server -xf start  
ExecReload=/usr/local/bin/fail2ban-client reload  
KillMode=process  
Restart=on-failure

[Install]  
WantedBy=multi-user.target

Обновляем конфигурацию systemd:

sudo systemctl daemon-reload

Включаем автоматический запуск fail2ban при загрузке системы:

sudo systemctl enable fail2ban

Запускаем сервис fail2ban:

sudo systemctl start fail2ban

Проверяем статус службы:

sudo systemctl status fail2ban

Все эти команды для вставки разом:

sudo systemctl daemon-reload  
sudo systemctl enable fail2ban  
sudo systemctl start fail2ban  
sudo systemctl status fail2ban

Открываем файл конфигурации

sudo nano /etc/fail2ban/jail.local

Вставляем:

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 Ваш_IP_адрес_сервера 
bantime = 1h
findtime = 10m
maxretry = 5
allowipv6 = true
backend = systemd

[sshd]
enabled = true
maxretry = 3
bantime = -1

В конфиге ваш_IP_адрес_сервера - нужно заменить на реальный IP вашего сервера

Перезапускаем службу для сохранения изменений:

sudo systemctl restart fail2ban

Проверить статус и текущие баны:

sudo fail2ban-client status

Или для конкретного джейла, например sshd:

sudo fail2ban-client status sshd

Вручную забанить IP командой:

sudo fail2ban-client set sshd banip <IP-адрес>

Вручную разбанить IP командой:

sudo fail2ban-client set sshd unbanip IP_АДРЕС

Просмотр истории банов в логах Fail2ban:

sudo grep Ban /var/log/fail2ban.log

Для просмотра в реальном времени новых банов:

sudo tail -f /var/log/fail2ban.log | grep Ban

Общее число банов (всех записей «Ban»):

grep "Ban" /var/log/fail2ban.log | wc -l

Ротация логов

Ротация логов – это процесс автоматического архивирования и очистки лог-файлов, чтобы они не занимали слишком много места на диске. Когда лог-файл достигает определённого размера или проходит заданный промежуток времени, система создаёт его копию (архивирует), а исходный файл очищает или заменяет новым пустым файлом. Это помогает сохранить контроль над объёмом хранилища и упрощает управление журналами без потери важных данных.

Конфигурация ротации логов для Fail2ban

Открываем:

nano /etc/logrotate.d/fail2ban

Вставляем:

/var/log/fail2ban.log {
    size 10M
    missingok
    notifempty
    copytruncate
    create 640 root adm
}
Пояснения к параметрам:

Ручная проверка по указанной конфигурации:

sudo logrotate -f /etc/logrotate.d/fail2ban